# frozen_string_literal: true

module Reports::ProfileViews
  extend ActiveSupport::Concern

  class_methods do
    def report_profile_views(report)
      group_filter = report.filters.dig(:group)
      report.add_filter("group", type: "group", default: group_filter)

      start_date = report.start_date
      end_date = report.end_date
      basic_report_about report,
                         UserProfileView,
                         :profile_views_by_day,
                         start_date,
                         end_date,
                         group_filter

      report.total = UserProfile.sum(:views)
      report.prev30Days =
        UserProfileView.where(
          "viewed_at >= ? AND viewed_at < ?",
          start_date - 30.days,
          start_date + 1,
        ).count
    end
  end
end
